import axios from 'axios'
import { ElMessage } from 'element-plus'
import router from '@/router'
//定义一个变量,记录公共的前缀  ,  baseURL
const baseURL = '/api';
const instance = axios.create({ baseURL })
import {useTokenStore} from '@/stores/token.js'


// 请求拦截器
instance.interceptors.request.use(
    config => {
        // 获取并设置token
        const tokenStore = useTokenStore();
        if (tokenStore.token) {
            config.headers.Authorization = tokenStore.token
        }
        return config
    },
    error => {
         Promise.reject(error)
    }
)

// 响应拦截器
instance.interceptors.response.use(
    result => {
        // 判断业务状态码
        if (result.data.code === 200) {
            return result.data
        }

        // 操作失败
        ElMessage.error(result.data)
        return Promise.reject(result.data)
    },
        error => {
        if (error.response) {
            // 有响应但状态码不是2xx
            switch (error.response.status) {
                case 401:
                    ElMessage.error('请先登录')
                    //removetoken??
                    router.push('/user/auth')
                    break
                case 403:
                    ElMessage.error('没有操作权限')
                    break
                case 404:
                    ElMessage.error('请求的资源不存在')
                    break
                case 500:
                    ElMessage.error('服务器内部错误')
                    break
                default:
                    ElMessage.error('服务异常')
            }
        } else if (error.request) {
            // 发出了请求但没有收到响应
            ElMessage.error('网络异常，请检查网络连接')
        } else {
            // 请求配置出错
            ElMessage.error('请求配置错误')
        }
        return Promise.reject(error)
    }
)

export default instance